package javaTeste.tMetodo;

import java.Anotar;
import java.Metodo;
import java.classe.Classe;

import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;


public class TesteMetodosAdicionandoExecoesModificadores implements Especificacao2 {
	Metodo agua = null;

	Metodo terra = null;
	@Before
	public void up() {
		agua = new Metodo("agua");
		terra = new Metodo("terra");
	}

	@Test
	public void anotacaoAgua_NMetodoAgua() {
		agua.addAnotacao(new Anotar("agua"));
		agua.addAnotacao(new Anotar("n"));
		Assert.assertEquals("@agua\n@n void agua(){}", agua.codigoFonte());
	}

	@Test
	public void metodoAguaExcessaoAgua_N() {
		agua.addExceptionAssign(new Classe("Agua"));
		agua.addExceptionAssign(new Classe("N"));
		Assert.assertEquals("void agua()throws Agua, N{}", agua.codigoFonte());
	}

	@Test
	public void metodoFINALTerra() {
		terra.isFinal(true);
		Assert.assertEquals("final void terra(){}", terra.codigoFonte());
	}

	@Test
	public void metodoFINAL_SYNCHRONIZEDTerra() {
		terra.isFinal(true);
		terra.isSynchronized(true);
		Assert.assertEquals("synchronized final void terra(){}", terra
				.codigoFonte());
	}

	@Test
	public void metodoFINAL_SYNCHRONIZED_STATICTerra() {
		terra.isFinal(true);
		terra.isSynchronized(true);
		terra.isStatico(true);
		Assert.assertEquals("synchronized final static void terra(){}", terra
				.codigoFonte());
	}
	@Test
	public void metodoFINAL_SYNCHRONIZED_PUBLIC_STATICTerra() {
		terra.isFinal(true);
		terra.isSynchronized(true);
		terra.isStatico(true);
		terra.setModificador("public");
		Assert.assertEquals("public synchronized final static void terra(){}", terra
				.codigoFonte());
	}
}
